package com.dog.basics.service.common;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.dog.basics.bean.dto.admin.common.AdminDogComFileInfoFromDto;
import com.dog.basics.bean.dto.admin.common.AdminSonDogComFileInfoFromDto;
import com.dog.basics.bean.model.common.DogComFileInfo;
import com.dog.basics.bean.vo.admin.common.AdminComFileInfosVo;
import com.dog.basics.bean.vo.admin.common.AdminDogComFileInfoVo;
import com.dog.basics.bean.vo.api.common.ApiComFileInfoUploadVo;
import com.dog.basics.bean.vo.api.common.ApiComFileInfosVo;
import com.dog.basics.common.util.PageParam;
import lombok.SneakyThrows;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

/**
 * <p>
 * 文件信息表 服务类
 * </p>
 *
 * @author YC
 * @since 2021-02-22
 */
public interface IDogComFileInfoService extends IService<DogComFileInfo> {
    /**
     * @Description: 分页查询
     * @Param: status
     * @return: IPage
     * @Author: wph
     * @Date:
     */
    IPage<AdminDogComFileInfoVo> getPageList(PageParam page, AdminDogComFileInfoFromDto obj);

    /**
     * 子页面分页查询
     * @param page 分页对象
     * @param obj 文件信息表
     * @return
     */
    IPage<AdminDogComFileInfoVo> getSonPageList(PageParam page, AdminSonDogComFileInfoFromDto obj);
    /**
     * @Description: 查询详情
     * @Param: obj
     * @return: Boolean
     * @Author: cy
     * @Date: 2020/05/19  0027
     */
    AdminDogComFileInfoVo getObjXq(Long id);
    /**
     * @param business_id 业务标识
     * @param classTable  所属表
     * @return
     * @功能描述: 查询项目中文件信息
     * @author He
     * @date 2021/2/22
     */
    List<ApiComFileInfosVo> getApiComFileInfos(Long business_id, String classTable);
    /**
     * @param business_id 业务标识admin
     * @param classTable  所属表
     * @return
     * @功能描述: 查询项目中文件信息
     * @author He
     * @date 2021/2/22
     */
    List<AdminComFileInfosVo> getAdminComFileInfos(Long business_id, String classTable);

    /**
     * @功能描述: API-上传业务文件
     * @author He
     * @date 2021/2/22
     */
    @SneakyThrows
    List<ApiComFileInfoUploadVo> addApiComFileInfoUpload(List<MultipartFile> file, List<String> aliasNames);

    /**
     * @param fileIds        使用的文件ids数组标识
     * @param businessId     业务标识
     * @param classTableName 使用业务表名 SYS_USER
     * @return
     * @功能描述: 修改未使用的文件关联业务 (内部)
     * @author He
     * @date 2021/2/23
     */
    Boolean editNotUsedComFileInfo(List<Long> fileIds, Long businessId, String classTableName);
    /**
     * @功能描述:  删除(修改删除的) 添加(修改添加的) (内部)
     * @param fileIds 使用的文件ids数组标识
     * @param businessId 业务标识
     * @param classTableName 使用业务表名 SYS_USER
     * @return
     * @author He
     * @date 2021年3月18日
     */
    Boolean editDelUsedAddNotUsed(List<Long> fileIds, Long businessId, String classTableName);
    /**
     * @Description: 删除
     * @Param: ids
     * @return: Boolean
     * @Author: cy
     * @Date: 2020/05/19  0027
     */
    Boolean deleteObj(Long id);
}
